Полезные ссылки https://git.gosuslugi.local/ervu/source/ervu-object-diff-calc GIT
Назначение Сервис вычисляет разницу между двумя объектами ЕРВУ по полям (добавлено, изменено, удалено)
Вынесен
в отдельный сервис для взаимодействия через REST API с сервисом
ervu-application-calc (изначально контроллер находился в
ervu-import-history-service)
Сервис обеспечивает следующие функции: Предоставляет
информацию об изменениях между двумя объектами, им могут пользоваться
любые другие сервисы, которым необходимо получить список изменений между
объектами Вычисляет изменения между объектами, для этого он
раскладывает объекты в плоскую мапу и смотрит разницу. Если хотя бы один
из объектов null - вернет null. Возвращает 1 объект ObjectDiffs с следующими "группами" :
updateDiffs - обновлено deleteDiffs - удалено addedDiffs - добавлено
С s3 сервис не взаимодействует
KAFKA Сервис имеет доступ к топику pgs.proxy.endpoints.access.info в роли PRODUCER (Пишет)
topics:
- name: pgs.proxy.endpoints.access.info
operation: Create
patternType: literal
- name: pgs.proxy.endpoints.access.info
operation: Write
patternType: literal
Пример сообщения
[{"appName":"ervu-object-diff-calc","pkg":"rtl.pgs.ervu.objectdiffcalc.controller.DiffController","method":"Post","ingressPath":"/service/ervu-object-diff-calc","path":"/diffs/compute","rules":{}}]
REST API контроллеры Сервис
имеет единственный эндпоинт, который принимает на вход 2 объекта, и
возвращает разницы между этими объектами - так называемые diffs, которые
представляют из себя массив новых, измененных и удаленных полей.
POST /service/ervu-object-diff-calc/diffs/compute
Запрос
{
"oldObject": {
"id": "ed55987a-594b-4092-9639-1945b0bcf010",
"recruitId": "940e792d-a06f-411b-b240-ba23a7749c10",
"dateTime": "2024-02-13T07:30:46.676Z",
"event": "Гражданин не явился на мероприятие в военный комиссариат",
"action": "Action",
"status": "5",
"userInfo": {
"userId": null,
"userName": "Система",
"userDomainId": null,
"userDomainName": "arm",
"userRecruitmentName": null
},
"targetRecruitmentId": null,
"currentRecruitmentId": null,
"cause": null,
"description": null
},
"newObject": {
"id": "b4475036-3ed2-4788-9470-d583d258356f",
"recruitId": "e071c766-32d7-40ca-8fef-ef76117d65de",
"dateTime": "2024-02-13T06:06:32.736Z",
"event": "Ожидается подтверждение от реализаторов временных мер",
"action": "Action",
"lastName": "Мохов",
"status": "11.6",
"userInfo": {
"userId": null,
"userName": "Система",
"userDomainId": null,
"userDomainName": "arm",
"userRecruitmentName": null
},
"targetRecruitmentId": null,
"currentRecruitmentId": null,
"cause": null,
"description": null
},
"skipDeletions": true
}
Успешное выполнение операции
{
"updated": [
{
"path": "id",
"oldValue": "ed55987a-594b-4092-9639-1945b0bcf010",
"newValue": "b4475036-3ed2-4788-9470-d583d258356f"
},
{
"path": "recruitId",
"oldValue": "940e792d-a06f-411b-b240-ba23a7749c10",
"newValue": "e071c766-32d7-40ca-8fef-ef76117d65de"
},
{
"path": "dateTime",
"oldValue": "2024-02-13T07:30:46.676Z",
"newValue": "2024-02-13T06:06:32.736Z"
},
{
"path": "event",
"oldValue": "Гражданин не явился на мероприятие в военный комиссариат",
"newValue": "Ожидается подтверждение от реализаторов временных мер"
},
{
"path": "status",
"oldValue": "5",
"newValue": "11.6"
}
],
"added": [
{
"path": "lastName",
"newValue": "Мохов"
}
]
}
В случае, если запрос неверный (к примеру отсутствует newObject ) - ответом вернётся
{
"oldObject": null,
"newObject": {
"id": "b4475036-3ed2-4788-9470-d583d258356f",
"recruitId": "e071c766-32d7-40ca-8fef-ef76117d65de",
"dateTime": "2024-02-13T06:06:32.736Z",
"event": "Ожидается подтверждение от реализаторов временных мер",
"action": "Action",
"status": "11.6",
"userInfo": {
"userId": null,
"userName": "Система",
"userDomainId": null,
"userDomainName": "arm",
"userRecruitmentName": null
},
"targetRecruitmentId": null,
"currentRecruitmentId": null,
"cause": null,
"description": null
},
"skipDeletions": true
}
Взаимодействие с другими сервисами Схема взаимодействия
ervu-object-history-service
Примеры вычисления разницы Добавление объекта
1 комментарий
Неизвестный пользователь (a.s.voronin@rt-sk.ru)
TODO: описать computeRecruit
Добавить комментарий